package com.zenithmind.version.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 标签VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "标签VO")
public class TagVO {

    /**
     * 标签ID
     */
    @Schema(description = "标签ID")
    private String id;

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String repositoryId;

    /**
     * 仓库名称
     */
    @Schema(description = "仓库名称")
    private String repositoryName;

    /**
     * 提交ID
     */
    @Schema(description = "提交ID")
    private String commitId;

    /**
     * 提交哈希
     */
    @Schema(description = "提交哈希")
    private String commitHash;

    /**
     * 提交消息
     */
    @Schema(description = "提交消息")
    private String commitMessage;

    /**
     * 标签名称
     */
    @Schema(description = "标签名称")
    private String tagName;

    /**
     * 标签描述
     */
    @Schema(description = "标签描述")
    private String description;

    /**
     * 标签类型
     */
    @Schema(description = "标签类型")
    private Integer tagType;

    /**
     * 标签类型名称
     */
    @Schema(description = "标签类型名称")
    private String tagTypeName;

    /**
     * 版本序号
     */
    @Schema(description = "版本序号")
    private Integer versionOrder;

    /**
     * 发布说明
     */
    @Schema(description = "发布说明")
    private String releaseNotes;

    /**
     * 是否为预发布
     */
    @Schema(description = "是否为预发布")
    private Boolean isPrerelease;

    /**
     * 是否为草稿
     */
    @Schema(description = "是否为草稿")
    private Boolean isDraft;

    /**
     * 下载次数
     */
    @Schema(description = "下载次数")
    private Long downloadCount;

    /**
     * 创建者ID
     */
    @Schema(description = "创建者ID")
    private String creatorId;

    /**
     * 创建者名称
     */
    @Schema(description = "创建者名称")
    private String creatorName;

    /**
     * 发布时间
     */
    @Schema(description = "发布时间")
    private LocalDateTime releaseTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    /**
     * 是否可编辑
     */
    @Schema(description = "是否可编辑")
    private Boolean canEdit;

    /**
     * 是否可删除
     */
    @Schema(description = "是否可删除")
    private Boolean canDelete;

    /**
     * 是否可下载
     */
    @Schema(description = "是否可下载")
    private Boolean canDownload;
}
